#include "window_watchdog_driver.h"

void window_watchdog_driver_config()
{
    rcu_periph_clock_enable(RCU_WWDGT);

    // 系统时钟168MHz，PCLK1（APB1的输出）=42MHz
    // WWDGT CLK = (PCLK1/4096)/4 ≈ 2563.5Hz，每一次约0.39ms
    // 计数器起始127（最大），计数器最小能减到的值为3F（63），设置窗口值为80（十进制）
    // 可用喂狗窗口：  0.39ms*(127-80) < 喂狗 < 0.39ms*(127-63)
    // 18.33ms < 喂狗 < 24.96ms
    // 在上一次喂狗或计数器重置为最大后，在18.33ms 和 24.96ms之间进行喂狗，否则系统复位
    wwdgt_config(127, 80, WWDGT_CFG_PSC_DIV4);
    wwdgt_enable();
}

void window_watchdog_driver_test()
{
    window_watchdog_driver_config();

    while (1)
    {
        delay_1ms(21);
        wwdgt_counter_update(127);

        printf("窗口看门狗:wang wang wang ...\n");
    }
}